''========================================================
'' Autor: 		Luis Antonio Lara Capetillo
'' Fecha Creación: 	26/4/2013
'' Descripcion: 	Clase Componente ctlGridAduana
''========================================================

Public Class ctlGridAduana

  Inherits System.Web.UI.UserControl
	    Dim tablaAuxiliar As DataTable

#Region "Propiedades"
    ''' <summary>
    ''' Obtiene la tabla con la informacion del gridview
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public ReadOnly Property TablaDatos() As DataTable
        Get
            ObtenerFilasAgregadas()
            Return tablaAuxiliar
        End Get
    End Property


  ''' <summary>
  ''' Habilita o Desabilita el Control para Edicion
  ''' </summary>
  ''' <value>True o False</value>
  ''' <remarks></remarks>
  Public WriteOnly Property Enabled() As Boolean
    Set(value As Boolean)
	  gdvNidPlaneacion.Enabled=value
      
    End Set
  End Property

  ''' <summary>
  ''' Habilita o Desabilita el Control para solo lectura
  ''' </summary>
  ''' <value>True o False</value>
  ''' <remarks>ReadOnly</remarks>
  Public WriteOnly Property Lectura() As Boolean
    Set(value As Boolean)
	  gdvNidPlaneacion.ReadOnly=value
      
    End Set
  End Property


#End Region
#Region "Eventos"
    Protected Sub btnNuevo_Click(sender As Object, e As System.Web.UI.ImageClickEventArgs) Handles btnNuevo.Click
        ObtenerFilasAgregadas()
        tablaAuxiliar.Rows.Add(tablaAuxiliar.NewRow())
        actualizarGrid(tablaAuxiliar)
    End Sub
	
    ''' <summary>
    ''' Evento que se genera cuando se da clic a cualquier boton del gridView
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Protected Sub gdvDatos_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs)
        Dim index As Integer
        index = Convert.ToInt32(e.CommandArgument)
        If e.CommandName = "Eliminar" Then
            ObtenerFilasAgregadas()
            tablaAuxiliar.Rows(index).Delete()
            actualizarGrid(tablaAuxiliar)
        End If
    End Sub

#End Region
#Region "Metodos"
    Public Sub mostrarGrid()
        Dim tabla As New DataTable
        Dim row As DataRow = tabla.NewRow()
        tabla.Rows.Add(row)
        gdvDatos.DataSource = tabla
        gdvDatos.DataBind()
    End Sub

    Private Sub ObtenerFilasAgregadas()
        tablaAuxiliar = crearTabla()
        For i As Integer = 0 To gdvDatos.Rows.Count - 1
            Dim NuevaFila As DataRow = tablaAuxiliar.NewRow()
            'NuevaFila("Contenedor") = CType(gdvDatos.Rows(i).Cells(0).FindControl("txtContenedor"), TextBox).Text
			NuevaFila("nid") = CType(gdvDatos.Rows(i).Cells(0).FindControl("txtnid"), TextBox).Text
	NuevaFila("nidPlaneacion") = CType(gdvDatos.Rows(i).Cells(1).FindControl("txtnidPlaneacion"), TextBox).Text
	NuevaFila("nidAg_Aduanal") = CType(gdvDatos.Rows(i).Cells(2).FindControl("txtnidAg_Aduanal"), TextBox).Text
	NuevaFila("tipo_Maniobra") = CType(gdvDatos.Rows(i).Cells(3).FindControl("txttipo_Maniobra"), TextBox).Text
	
			
            tablaAuxiliar.Rows.Add(NuevaFila)
        Next
    End Sub

    Private Function crearTabla() As DataTable
        Dim tabla As New DataTable
        Dim str_NomColumnas(?NumeroColumnas) As String
        Dim Columna(str_NomColumnas.Length - 1) As DataColumn

		str_NomColumnas(0) = "nid"
	str_NomColumnas(1) = "nidPlaneacion"
	str_NomColumnas(2) = "nidAg_Aduanal"
	str_NomColumnas(3) = "tipo_Maniobra"
	

		For i As Integer = 0 To str_NomColumnas.Length - 1
            Columna(i) = New DataColumn()
            Columna(i).DataType = System.Type.GetType("System.String")
            Columna(i).ColumnName = str_NomColumnas(i) 'nombre de la columna
            Columna(i).DefaultValue = ""
            tabla.Columns.Add(Columna(i))
        Next

        Return tabla
    End Function

    Private Sub actualizarGrid(tablaDatos As DataTable)
        Dim total_filas As Integer = tablaDatos.Rows.Count - 1
        Dim tabla As New DataTable

        For i As Integer = 0 To total_filas
            tabla.Rows.Add(tabla.NewRow())
        Next
        gdvDatos.DataSource = tabla
        gdvDatos.DataBind()

        For i As Integer = 0 To tablaDatos.Rows.Count - 1
			CType(gdvDatos.Rows(i).Cells(0).FindControl("txtnid"), TextBox).Text = tablaDatos.Rows(i)("nid")
	CType(gdvDatos.Rows(i).Cells(1).FindControl("txtnidPlaneacion"), TextBox).Text = tablaDatos.Rows(i)("nidPlaneacion")
	CType(gdvDatos.Rows(i).Cells(2).FindControl("txtnidAg_Aduanal"), TextBox).Text = tablaDatos.Rows(i)("nidAg_Aduanal")
	CType(gdvDatos.Rows(i).Cells(3).FindControl("txttipo_Maniobra"), TextBox).Text = tablaDatos.Rows(i)("tipo_Maniobra")
	
        Next
    End Sub
	
	Public Function VerificarDatosGridView() As String
        Dim validar As New ValidacionCampo
        Dim str_Mensaje = ""

        For i As Integer = 0 To gdvDatos.Rows.Count - 1
            'str_Mensaje += validar.ValidaCampo(CType(gdvDatos.Rows(i).Cells(0).FindControl("txtContenedor"), TextBox), "Contenedor")
			str_Mensaje += validar.ValidaCampo(CType(gdvDatos.Rows(i).Cells(0).FindControl("txtnid"), TextBox), "nid")
	str_Mensaje += validar.ValidaCampo(CType(gdvDatos.Rows(i).Cells(1).FindControl("txtnidPlaneacion"), TextBox), "nidPlaneacion")
	str_Mensaje += validar.ValidaCampo(CType(gdvDatos.Rows(i).Cells(2).FindControl("txtnidAg_Aduanal"), TextBox), "nidAg_Aduanal")
	str_Mensaje += validar.ValidaCampo(CType(gdvDatos.Rows(i).Cells(3).FindControl("txttipo_Maniobra"), TextBox), "tipo_Maniobra")
	
        Next

        Return str_Mensaje
    End Function

  ''' <summary>
  ''' Metodo para asignar los datos al componente 
  ''' </summary>
  ''' <param name="tablaDatos">DataTable donde se obtienen los datos</param>
  ''' <remarks></remarks>
  Public Sub AsignarDatos(ByVal tablaDatos As DataTable)
    
  End Sub

  ''' <summary>
  ''' Metodo para llenar el gdvDatos con datos de la table
  ''' </summary>
  ''' <param name="tabla">tabla donde se obtienen los datos</param>
  ''' <remarks></remarks>
  Public Sub llenarGdvDatos(ByVal tabla As DataTable)
    Me.gdvDatos.DataSource = tabla
    Me.gdvDatos.DataBind()
  End Sub


    ''' <summary>
    ''' Funcion para verificar los datos del control
    ''' </summary>
    ''' <returns>str_Mensaje</returns>
    ''' <remarks>si hay datos no validos regresara un mensaje de lo contrario ""</remarks>
    Public Function VerificarDatos() As String
        Dim validar As New ValidacionCampo
        Dim str_Mensaje = ""
		
		str_Mensaje += validar.ValidaCampo(gdvNidPlaneacion, "NidPlaneacion")
    
		
        Return str_Mensaje
    End Function

#End Region
End Class
